# -*- coding: utf8 -*-

from kivy.properties import StringProperty, NumericProperty
from kivy.uix.popup import Popup
from kivy.uix.button import Button
from kivy.lang import Builder
import sys
from kivy.uix.widget import Widget
from kivy.uix.dropdown import DropDown

Builder.load_string('''

<ListBoxItemButton>:
    size_hint: 1,None
    height: 44
    valign: 'middle'
    halign: 'center'
    text_size: self.size

<ListBox>:
    auto_width: True

<HSeparator>:
    size_hint_y: None
    height: 10
    canvas:
        Color:
            rgba: .8, .8, .8, .3
        Rectangle:
            size: self.width, 1
            pos: self.x, self.center_y

<VSeparator>:
    size_hint_x: None
    width: 10
    canvas:
        Color:
            rgba: .8, .8, .8, .3
        Rectangle:
            size: 1, self.height
            pos: self.center_x, self.y

<MessageBox>:
    size_hint: .5, .5

    auto_dismiss: False

    title: 'Съобщение'

    Widget:
        size: root.size
        pos: root.pos

        Label:
            center_x: self.parent.center_x
            top: self.parent.top - 20

            valign: 'middle'
            halign: 'center'

            markup: True

            size: self.parent.width,100

            text: root.message

        Button:
            center_x: root.center_x

            top: self.parent.top - 150
            size: 100,40

            text: 'ОК'

            on_press: root.close()

''')


class ListBox(DropDown):
    pass


class ListBoxItemButton(Button):
    item_id = NumericProperty()
    item_shif = StringProperty()

    def __init__(self, **kwargs):
        super(ListBoxItemButton, self).__init__(**kwargs)

        if 'item_id' in kwargs:
            self.item_id = kwargs['item_id']

        if 'item_shif' in kwargs:
            self.item_shif = kwargs['item_shif']


class HSeparator(Widget):
    pass


class VSeparator(Widget):
    pass


class MessageBox(Popup):
    """
    Модален прозорец със съобщение и бутон ОК. Не спира изпълнението.
    """
    message = StringProperty()
    callback = None

    def __init__(self, message, **kwargs):
        """Задължителни параметри:
        message: съобщение
        Допълнителни:
        title: заглавие (по подразбиране: 'Съобщение')
        exit: Изход от програмата при натискане на бутона (по подразбиране: False)
        callback: Функция, която да се извика при затваряне (по подразбиране: няма) (не се комбинара с exit)
        """
        super(MessageBox, self).__init__()

        self.message = message

        #инициализация на параметри
        if kwargs.has_key('title'):
            self.title = kwargs['title']

        if kwargs.has_key('exit'):
            self.callback = sys.exit

        if kwargs.has_key('callback'):
            self.callback = kwargs['callback']

    def close(self):
        self.dismiss()

        if self.callback:
            self.callback()

